
#汽车启动模型近似分析
import numpy as np
import matplotlib.pyplot as plt

#阶段1：匀加速
P0=80000        #额定功率
F=4000          #牵引力
f=2000          #阻力
m=2000          #车重
a=(F-f)/m
t=0
v0=0
P=0
list1=[]     #t
list2=[]     #v
while P<P0:
    v=a*t
    P=F*v
    list1.append(t)
    list2.append(v)
    t=t+1
t1=t
v1=v
plt.plot(list1,list2)     

#阶段2：变加速
import math

while v1<39.99:
    v1=v1+0.01
    t=-(v1+math.log(80000-2000*v1)*80000/2000-40-math.log(40000)*40)
    list1.append(t)
    list2.append(v1)
t2=t
v2=v1
plt.plot(list1,list2)    

#阶段3：匀速

while t<t2+100:
    t=t+1
    list1.append(t)
    list2.append(v2)
    
plt.plot(list1,list2)     #v-t图
plt.title('v-t')
plt.xlabel('t-s')
plt.ylabel('v-m/s')
plt.scatter(t1,20,color='r')
plt.vlines(20,0,20,color='r',linestyles='dashed')
plt.hlines(20,0,20,color='r',linestyles='dashed')
plt.scatter(t2,40,color='r')
plt.vlines(t2,0,40,color='r',linestyles='dashed')
plt.hlines(40,0,t2,color='r',linestyles='dashed')
plt.show()

'''
#-------------------------------------------------a-t图--------------------------------------------------
#阶段1：匀加速
P0=80000        #额定功率
F=4000          #牵引力
f=2000          #阻力
m=2000          #车重
a=(F-f)/m
t=0
v0=0
P=0
list1=[]     #t
list3=[]     #a
while P<P0:
    v=a*t
    P=F*v
    list1.append(t)
    list3.append(a)
    t=t+1
t1=t
v1=v
a1=a
plt.plot(list1,list3)     #a-t图

#阶段2：变加速
import math

while v1<39.99:
    v1=v1+0.01
    t=-(v1+math.log(80000-2000*v1)*80000/2000-40-math.log(40000)*40)
    a=(P0/v1-f)/m
    list1.append(t)
    list3.append(a)
t2=t
v2=v1
plt.plot(list1,list3)     #a-t图

#阶段3：匀速

while t<t2+100:
    t=t+1
    a=0
    list1.append(t)
    list3.append(a)

plt.plot(list1,list3)     #a-t图
plt.title('a-t')
plt.xlabel('t-s')
plt.ylabel('a-m/s^2')
plt.scatter(t1,a1,color='r')
plt.vlines(t1,0,a1,color='r',linestyles='dashed')
plt.hlines(a1,0,t1,color='r',linestyles='dashed')
plt.scatter(t2,0,color='r')
plt.show()
'''
'''
#-----------------------------------------------------F-t图----------------------------------------
#阶段1：匀加速
P0=80000        #额定功率
F=4000          #牵引力
f=2000          #阻力
m=2000          #车重
a=(F-f)/m
t=0
v0=0
P=0
list1=[]     #t
list4=[]     #F
while P<P0:
    v=a*t
    P=F*v
    list1.append(t)
    list4.append(F)
    t=t+1
t1=t
v1=v
plt.plot(list1,list4)     #F-t图

#阶段2：变加速
import math

while v1<39.99:
    v1=v1+0.01
    t=-(v1+math.log(80000-2000*v1)*80000/2000-40-math.log(40000)*40)
    F=P0/v1
    list1.append(t)
    list4.append(F)
t2=t
plt.plot(list1,list4)     #F-t图

#阶段3：匀速

while t<t2+100:
    t=t+1
    F=f
    list1.append(t)
    list4.append(F)
    
plt.plot(list1,list4)     #F-t图
plt.title('F-t')
plt.xlabel('t-s')
plt.ylabel('F-N')
plt.scatter(t1,4000,color='r')
plt.vlines(t1,0,4000,color='r',linestyles='dashed')
plt.hlines(4000,0,t1,color='r',linestyles='dashed')
plt.scatter(t2,2000,color='r')
plt.vlines(t2,0,2000,color='r',linestyles='dashed')
plt.hlines(2000,0,t2,color='r',linestyles='dashed')
plt.show()
'''
'''
#-----------------------------------------------------------P-t图------------------------------
#阶段1：匀加速
P0=80000        #额定功率
F=4000          #牵引力
f=2000          #阻力
m=2000          #车重
a=(F-f)/m
t=0
v0=0
P=0
list1=[]     #t
list5=[]     #P
while P<P0:
    v=a*t
    P=F*v
    list1.append(t)
    list5.append(P)
    t=t+1
t1=t
v1=v
plt.plot(list1,list5)     #P-t图

#阶段2：变加速
import math

while v1<39.99:
    v1=v1+0.01
    t=-(v1+math.log(80000-2000*v1)*80000/2000-40-math.log(40000)*40)
    a=(P0/v1-f)/m
    list1.append(t)
    list5.append(P)
t2=t
plt.plot(list1,list5)     #P-t图

#阶段3：匀速

while t<t2+100:
    t=t+1
    P=P0
    list1.append(t)
    list5.append(P)
    
plt.plot(list1,list5)     #P-t图
plt.title('P-t')
plt.xlabel('t-s')
plt.ylabel('P-W')
plt.scatter(t1,P0,color='r')
plt.vlines(t1,0,P0,color='r',linestyles='dashed')
plt.hlines(P0,0,t1,color='r',linestyles='dashed')
plt.show()
'''
